Manipulate[

Module[{zoomScale,viewDomain,howBig, plotOpts,plotOptsType, paramSubst,taylorP},

(* ImageSize of graph in pixels *)
howBig=190; 

(* Compute domain/range based on location of center and zoom settings *)
zoomScale[factor_]=(factor^3);
viewDomain[centerpt_,var_:0,radius_:zoomScale[zoomFactor]]:=If[NumberQ[var],{-Abs[radius]+centerpt,Abs[radius]+centerpt},
{var,
-Abs[radius]+centerpt,Abs[radius]+centerpt}];

(* Substitution rules for parameters used in user-entered equations *)
paramSubst={A->paramA,B->paramB,C->paramC};

(* Plot options common to all plots *)
plotOpts ={ImageSize->howBig};
plotOptsType=Options[Plot];

taylorP[f_,c_,n_]:=Normal[Series[f,{x,c,n}]];

Column[{Plot[Evaluate[{funct/.paramSubst,taylorP[funct/.paramSubst,x0,degree]}],Evaluate[viewDomain[viewPt[[1]],x],PlotStyle->{Red,Blue},PlotRange->Evaluate[viewDomain[viewPt[[2]]]],
Evaluate[FilterRules[plotOpts,plotOptsType]],Axes->True,AxesOrigin->{0,0},
Epilog->{PointSize[Medium],Black,Point[{x0,funct/.paramSubst/.x->x0}]}
]],Row[{"Near ",x0}],Row[{Style[Evaluate[funct/.paramSubst]],"≃",Style[taylorP[funct/.paramSubst,x0,degree]]}]}]],

Style["Taylor polynomials"],
{{funct,Sin[x],"f[x]= "}},
{{x0,1.,"center ="},-20.,20,Appearance->"Labeled"},
{{degree,3,"Degree of (Subscript[T, n]):"},1,50,1,Appearance->"Labeled"},
Style["Zoom"],
{{zoomFactor,1.8,""},6,0.1,ControlType->VerticalSlider,ControlPlacement->Left},
{{viewPt,{4,0},""},{-20,-20},{20,20},ControlPlacement->Right},
Delimiter,
{{paramA,5,"(+ integers) A"},0,50,1,Appearance->"Labeled",ControlPlacement->Bottom},
{{paramB,1,"(+/- integers) B"},-10,10,1,Appearance->"Labeled",ControlPlacement->Bottom},
{{paramC,0.5,"(+/- reals) C"},-1,1,Appearance->"Labeled",ControlPlacement->Bottom},Initialization:>(Needs["VectorFieldPlots`"];Needs["DifferentialEquations`InterpolatingFunctionAnatomy`"])
]

Manipulate[

Module[{zoomScale,viewDomain,howBig, plotOpts,plotOptsType, paramSubst,taylorP},

(* ImageSize of graph in pixels *)
howBig=190; 

(* Compute domain/range based on location of center and zoom settings *)
zoomScale[factor_]=(factor^3);
viewDomain[centerpt_,var_:0,radius_:zoomScale[zoomFactor]]:=If[NumberQ[var],{-Abs[radius]+centerpt,Abs[radius]+centerpt},
{var,
-Abs[radius]+centerpt,Abs[radius]+centerpt}];

(* Substitution rules for parameters used in user-entered equations *)
paramSubst={A->paramA,B->paramB,C->paramC};

(* Plot options common to all plots *)
plotOpts ={ImageSize->howBig};
plotOptsType=Options[Plot];

taylorP[f_,c_,n_]:=Normal[Series[f,{x,c,n}]];

Plot[Evaluate[Flatten[{funct/.paramSubst,Table[taylorP[funct/.paramSubst,x0,k],{k,1,degree}]}]],Evaluate[viewDomain[viewPt[[1]],x],
PlotStyle->Evaluate[Flatten[{Red,Table[Blue,{k,1,degree}]}]],PlotRange->Evaluate[viewDomain[viewPt[[2]]]],
Evaluate[FilterRules[plotOpts,plotOptsType]],Axes->True,AxesOrigin->{0,0},
Epilog->{PointSize[Medium],Red,Point[{x0,funct/.paramSubst/.x->x0}]}
]]],

Style["Taylor polynomials"],
{{funct,Sin[x],"f[x]= "}},
{{x0,1.,"center ="},-20.,20,Appearance->"Labeled"},
{{degree,3,"# of polynomials:"},1,20,1,Appearance->"Labeled"},
Style["Zoom"],
{{zoomFactor,1.8,""},6,0.1,ControlType->VerticalSlider,ControlPlacement->Left},
{{viewPt,{0,0},""},{-20,-20},{20,20},ControlPlacement->Right},
Delimiter,
{{paramA,5,"(+ integers) A"},0,50,1,Appearance->"Labeled",ControlPlacement->Bottom},
{{paramB,1,"(+/- integers) B"},-10,10,1,Appearance->"Labeled",ControlPlacement->Bottom},
{{paramC,0.5,"(+/- reals) C"},-1,1,Appearance->"Labeled",ControlPlacement->Bottom},Initialization:>(Needs["VectorFieldPlots`"];Needs["DifferentialEquations`InterpolatingFunctionAnatomy`"])
]